package com.xjtu.conan.controller;


import com.xjtu.conan.entity.TheatreImagesInfo;
import com.xjtu.conan.entity.UserInfo;
import com.xjtu.conan.response.AjaxResponse;
import com.xjtu.conan.service.TheatreImagesInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;

/**
 * <p>
 * 剧场版图片表 前端控制器
 * </p>
 *
 * @author 一只黑猩猩
 * @since 2021-04-19
 */
@CrossOrigin
@RestController
@RequestMapping("/conan/theatre-images-info")
@Api(value = "剧场版对应图片管理模块", description = "这是剧场版对应图片信息CRUD的模块")
public class TheatreImagesInfoController {
    @Autowired
    private TheatreImagesInfoService theatreImagesService;

    @ApiOperation(value = "获取全部剧场版图片", notes = "获取所有剧场版图片的信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "current", value = "当前页", required = false, defaultValue = "1", paramType = "query", dataType = "int"),
            @ApiImplicitParam(name = "size", value = "每页数量", required = false, defaultValue = "10", paramType = "query", dataType = "int")
    })
    @RequestMapping(value = "/getAllTheatreImages", method = RequestMethod.GET)
    public AjaxResponse getAll(@RequestParam(value = "current") Integer current,
                               @RequestParam(value = "size") Integer size) {
        return AjaxResponse.success(theatreImagesService.getAllTheatreImageInfo(current, size));
    }

    @ApiOperation(value = "根据id查找剧场版图片", notes = "获取根据id查找到的剧场版图片")
    @ApiImplicitParam(name = "tiid", value = "剧场版图片id", required = true, paramType = "query", dataType = "Long")
    @RequestMapping(value = "/getTheatreImageById", method = RequestMethod.GET)
    public AjaxResponse getTheatreImageById(@RequestParam(name = "tiid") Long tiid) {
        return AjaxResponse.success(theatreImagesService.getTheatreImageByid(tiid));
    }

    @ApiOperation(value = "根据剧场版id查找对应图片", notes = "获取根据剧场版id查找到的剧场版图片")
    @ApiImplicitParam(name = "tid", value = "剧场版id", required = true, paramType = "query", dataType = "Long")
    @RequestMapping(value = "/getTheatreImagesBytid", method = RequestMethod.GET)
    public AjaxResponse getTheatreImageBytid(@RequestParam(name = "tid") Long tid) {
        return AjaxResponse.success(theatreImagesService.getTheatreImagesBytid(tid));
    }


    @ApiOperation(value = "添加剧场版图片信息", notes = "获取剧场版图片信息并且添加")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "files", value = "剧场版图片文件", required = true, paramType = "form", dataType = "file"),
            @ApiImplicitParam(name = "tid", value = "所属剧场版id", required = true, paramType = "form", dataType = "Long")
    })
    @RequestMapping(value = "/addTheatreImages", method = RequestMethod.POST)
    public AjaxResponse addTheatreImages(@RequestParam(value = "files") MultipartFile[] files,
                                         @RequestParam(value = "tid") Long tid,
                                         HttpServletRequest request) throws IOException {
        UserInfo loginUser = (UserInfo) request.getSession().getAttribute("loginUser");
        return AjaxResponse.success("数据库受影响行数->" + theatreImagesService.addTheatreImages(files,tid,loginUser));
    }


    @ApiOperation(value = "删除剧场版图片信息", notes = "从数据库中删除某个剧场版图片")
    @ApiImplicitParam(name = "tiid", value = "删除剧场版图片id", required = true, paramType = "query", dataType = "Long")
    @RequestMapping(value = "/deleteTheatreImage", method = RequestMethod.DELETE)
    public AjaxResponse deleteTheatreImage(@RequestParam(value = "tiid") Long tiid) {
        return AjaxResponse.success("数据库受影响行数->" + theatreImagesService.deleteTheatreImages(tiid));
    }

    @ApiOperation(value = "剧场版图片总数量", notes = "获取数据库中剧场版图片总数量")
    @RequestMapping(value = "/getTotal", method = RequestMethod.GET)
    public AjaxResponse getTotal() {
        return AjaxResponse.success(theatreImagesService.getTotal());
    }

}

